首先创建一个html的扩展方法,这个方法是万能的,可以直接拿到您的项目中使用:
//主要就是输出分页的超级链接的标签 //自定义分页Helper扩展 public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount) { var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath; pageSize = pageSize == 0 ? 3 : pageSize; var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数 var output = new StringBuilder(); if (totalPages > 1) { //if (currentPage != 1) {//处理首页连接 output.AppendFormat("首页 ", redirectTo, pageSize); } if (currentPage > 1) {//处理上一页的连接 output.AppendFormat("上一页 ", redirectTo, currentPage - 1, pageSize); } else { // output.Append("上一页"); } output.Append(" "); int currint = 5; for (int i = 0; i <= 10; i++) {//一共最多显示10个页码,前面5个,后面5个 if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages) { if (currint == i) {//当前页处理 //output.Append(string.Format("[{0}]", currentPage)); output.AppendFormat("{3} ", redirectTo, currentPage, pageSize, currentPage); } else {//一般页处理 output.AppendFormat("{3} ", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint); } } output.Append(" "); } if (currentPage < totalPages) {//处理下一页的链接 output.AppendFormat("下一页 ", redirectTo, currentPage + 1, pageSize); } else { //output.Append("下一页"); } output.Append(" "); if (currentPage != totalPages) { output.AppendFormat("末页 ", redirectTo, totalPages, pageSize); } output.Append(" "); } output.AppendFormat("第{0}页 / 共{1}页", currentPage, totalPages);//这个统计加不加都行 return new HtmlString(output.ToString()); }如果不知道什么是扩展方法,以及不知道扩展方法如何使用,可以看我的另外一篇文章,
http://blog.csdn.net/only_yu_yy/article/details/78509091
然后在视图中调用这个方法
最后一步,在控制器中加入如下代码:@Html.ShowPageNavigate((int)ViewData["pageIndex"], (int)ViewData["pageSize"], (int)ViewData["totalCount"])
DataModelContainer dbContainer = new DataModelContainer(); // GET: User public ActionResult Index(int pageIndex = 1,int pageSize=2) { ViewData["pageIndex"] = pageIndex; ViewData["pageSize"] = pageSize; ViewData["totalCount"] = dbContainer.User.Count(); ViewData.Model = dbContainer.User.OrderBy(u=>u.Id).Skip(pageSize*(pageIndex-1)).Take(pageSize).AsEnumerable(); return View(); }这就可以轻松实现分页效果了。